package com.pllandxzx.tool;

import com.pllandxzx.bean.MenuBean;
import org.springframework.stereotype.Component;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @ClassName：BuildMenuTree
 * @Author: 阿⭐
 * @Date: 2025/6/23 16:23
 * @Description: TODO
 */
@Component
public class BuildMenuTree {
    /**
     * @Description: 构建树形结构的方法
     * @Param: allMenus
     * @Return: rootMenus
     * @Author: 阿⭐
     * @Date: 2025/6/23
     */
    public List<MenuBean> buildMenuTree(List<MenuBean> allMenus) {
        Map<Long, MenuBean> menuMap = new HashMap<>();

        // 先将所有菜单放入 map 中，便于后续查找
        for (MenuBean menu : allMenus) {
            menuMap.put(menu.getMenuId(), menu);
        }

        List<MenuBean> rootMenus = new ArrayList<>();

        for (MenuBean menu : allMenus) {
            if (menu.getMenuParent() == null || menu.getMenuParent() == 0) {
                // 如果没有父菜单，则为根菜单
                rootMenus.add(menu);
            } else {
                // 否则找到其父菜单并添加到子菜单列表中
                MenuBean parent = menuMap.get(menu.getMenuParent());
                if (parent != null) {
                    parent.getChildren().add(menu);
                }
            }
        }

        return rootMenus;
    }
}
